#include <vector>
#include <iostream>
#include <set>

using namespace std;

class Nodo{
public:
	int id;
	int grado;
	float pesos_ady;
	int id_particion;
	//vector < Nodo *> adyacentes;

	Nodo(int _id);
  //void agregarAdyacente(Nodo * adyacente);
  
	//bool operator<(const Nodo& n) const{	//operator overload para "<"
		//return pesos_ady < n.pesos_ady;	
	//}

	 
};

class Vertice{
public:
	//int id;
	int id_u;
	int id_v;
	float w; //peso
	
	Vertice(int u, int v, float w);
	bool operator<(const Vertice& ver) const{	//operator overload para "<"
		return w < ver.w;	
	}
};

class Particion{
public:
	int id;
	float peso;
	set <int> id_nodos;
	Particion(int _id);
};

class Resultado{
public:
	int k;
	vector< Particion > particiones;
	float pesoTotal;
	Resultado(int _k);
};

class Grafo{
public:
	int n;
	int m;
	int k;
	vector< vector< float> > matriz_ad;
	Grafo(int _n, int _m, int _K);
	//void agregarArista(int n1, int n2, int w)
};



//extern int n, m, u, v, K;
//extern vector<Nodo> nodos;
//vector <Nodo> crearGrafo();

